package service

import (
	"chat-im/model"
	"errors"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/go-xorm/xorm"
	"log"
)

// 定义一个全局变量 对应的是一个指针
var DbEngin *xorm.Engine

// init 在main函数运行的时候自动运行的
func init() {
	//DbEngin进行初始化
	driverName := "mysql"
	DsName := "root:@(127.0.0.1:3306)/chat?charset=utf8"
	//这个操作有可能是变量再次赋值了，所以有可能是个nil
	//DbEngin, err := xorm.NewEngine(driverName, DsName)
	//if err != nil {
	//	//直接退出和fmt.Printf不一样
	//	log.Fatal(err.Error()) //Fatal函数作用，如果模版渲染出错了，这个应用不用往下跑了，直接退出
	//}

	err := errors.New("")
	DbEngin, err = xorm.NewEngine(driverName, DsName)
	if nil != err && "" != err.Error() {
		//直接退出和fmt.Printf不一样
		log.Fatal(err.Error()) //Fatal函数作用，如果模版渲染出错了，这个应用不用往下跑了，直接退出
	}

	//进行一些设置，在调试模式的设置
	//是否显示sql语句
	DbEngin.ShowSQL(true)
	//数据库最大链接数，线上环境自己设置，这个直接影响数据库的性能
	DbEngin.SetMaxOpenConns(2)
	//自动建表User
	//同步表结构
	DbEngin.Sync2(new(model.User), new(model.Contact), new(model.Community))

	//打印一下是否初始化成功
	fmt.Println("init data base ok")
}
